package com.simtop.dao;


import com.simtop.pojo.userpo.User;
import com.simtop.pojo.userpo.UserExamVo;
import com.simtop.vo.exam.ExamVo;
import com.simtop.vo.exam.ExamVos;
import com.simtop.vo.sj.*;
import com.simtop.vo.word.WordExamSjVo;
import com.simtop.vo.word.WordExamVo;
import jnr.posix.WString;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.Date;
import java.util.List;
import java.util.Map;

@Mapper
public interface SjDao {


    List<sjVo> getAllSj(@Param("op") String op, @Param("px") String px, @Param("dodId") Integer dodId, @Param("tableId") Integer tableId, @Param("sjtypeId") Integer sjtypeId, @Param("search") String search , @Param("lasttypeId") Integer lasttypeId);


    List<sjVoSt> getAllSj2(@Param("userId") Integer userId);

    List<sjVoSt> getAllSj3(@Param("op") String op, @Param("px") String px, @Param("dodId") Integer dodId, @Param("tableId") Integer tableId, @Param("sjtypeId") Integer sjtypeId, @Param("search") String search, @Param("userId") Integer userId);

    List<sjVo> getAllSj4(@Param("op") String op, @Param("px") String px, @Param("dodId") Integer dodId, @Param("tableId") Integer tableId, @Param("sjtypeId") Integer sjtypeId, @Param("search") String search, @Param("userId") Integer userId);

    List<sjVo> getAllSj5(@Param("op") String op, @Param("px") String px, @Param("dodId") Integer dodId, @Param("tableId") Integer tableId, @Param("sjtypeId") Integer sjtypeId, @Param("search") String search, @Param("userId") Integer userId);


    List<ResourceFj> getListSjScource(Integer id);

    boolean insertSj(InsertJsVo insertJsVo);

    List<SjTypeVo> getType();

    void insertSjcources(@Param("upload") String upload, @Param("sjid") Integer sjid, @Param("namesj") String namesj, @Param("typesj") String typesj);

    void insertPng(@Param("upload") String upload, @Param("namesj") String namesj, @Param("typesj") String typesj, @Param("sjId") Integer sjId);

    int updateSj(InsertJsVo insertJsVo);

    int deleteSj(Integer id);

    boolean insertExam(ExamVo examVo);

    void insertExamSj(@Param("examId") Integer examId, @Param("sjIds") Integer sjIds);

    List<ExamVos> findExam(@Param("op") String op, @Param("px") String px, @Param("examName") String examName);

    List<ExamVos> findExamUser(@Param("op") String op, @Param("px") String px, @Param("examName") String examName);

    ExamVos findExam2(@Param("examId") Integer examId);

    List<sjVo> findExamSj(@Param("examId") Integer examId, @Param("op") String op, @Param("px") String px);

    int findCount(@Param("id") Integer id);

    void deleteExamByid(Integer examId);

    int deleteExam(Integer examId);

    List<sjVo> findStuExamSj(Integer examId);

    List<sjVos> findStuSJ(@Param("examId") Integer examId);

    sjVoss findone(@Param("examId") Integer examId, @Param("stuexamId") Integer stuexamId, @Param("sjId") Integer sjId);

    String selectExName(@Param("examId") Integer examId);

    List<sjVos> findStuSJ2(Integer examId);

    void createStuSj(@Param("userId") Integer id, @Param("sjId") Object sjIds);

    void createStuSj2(@Param("userId") Integer id, @Param("sjId") Object sjIds);

    void insertStuSj(@Param("sjId") Integer sjId, @Param("userId") Integer userId, @Param("answer") String answer);

    void deleteSjStuXl(@Param("sjId") Integer sjId, @Param("userId") Integer userId);

    List<Map<Object, Object>> stuCountXlOrigin(@Param("userId") Integer userId);

    List<Map<Object, Object>> stuCountXlDod(@Param("userId") Integer userId);

    List<Map<Object, Object>> stuCountXlType(@Param("userId") Integer userId);

    List<Map<Object, Object>> stuCountXlTable(@Param("userId") Integer userId);

    List<Map<Object, Object>> stuCountXlCom(@Param("userId") Integer userId);

    void deleteStu(Integer id);

    Date findCreateTime(Integer stuexamId);

    int findisover(Integer id);

    int findallover();

    void updateExames(@Param("examId") Integer examId,
                      @Param("examTime") Integer examTime,
                      @Param("assessMent") Integer assessMent,
                      @Param("examName") String examName);

    List<LastTypeVo> getlasttype(Integer id);

    ExamVos findOneExam(Integer examId);

    List<WordExamVo> findwordExamVos(Integer examId);

    List<WordExamSjVo> findWordExamSj(@Param("examId") Integer examId,@Param("tableId") Integer tableId);

    List<UserExamVo> getExamNameUser(Integer examId);

    void DeleteExamUser(Integer examId);

    int updateForPdf(Integer userid, Integer stuexamid, String as);

    List<String> findListAllStu(Integer examid);

    String findListAllStuForEx(Integer id);

    Date selectoutos(Integer stuexamId);
}
